import os
import sys
from pathlib import Path

def 当前工作目录():
    return os.getcwd()
def 程序文件所在目录():
    '''以兼容pyinstaller的方式，获取当前py脚本或者打包后exe文件所在的目录
    因为通常配置文件和脚本/exe放在同一个目录下
    但是我们可能从任意路径运行之歌脚本，也就是当前工作目录不确定
    '''
    executable_path = sys.argv[0] # 获取当前执行文件的完整路径
    executable_path = os.path.realpath(executable_path) #使用realpath来确保获得长路径
    executable_directory = os.path.dirname(os.path.abspath(executable_path)) # 获取该文件所在的目录
    return executable_directory
def 程序文件所在目录下的文件(fn):
    return os.path.join(程序文件所在目录(), fn)
def 程序文件名():
    executable_path = sys.argv[0]# 获取当前执行文件的完整路径
    executable_path = os.path.realpath(executable_path) #使用realpath来确保获得长路径
    executable_name = os.path.basename(executable_path)
    return executable_name
def 本程序全路径文件名():
    """获取本软件的全路径文件名"""
    return str(Path(sys.argv[0]).resolve())
def 本程序Pyinstaller打包运行临时目录下文件名():
    return os.path.abspath(__file__)

if __name__ == "__main__":
    print("当前工作目录是:", 当前工作目录())
    print("程序文件所在目录:", 程序文件所在目录())
    print("程序文件名:", 程序文件名())
    print("本程序全路径文件名:", 本程序全路径文件名())
    print("本程序Pyinstaller打包运行临时目录下文件名:", 本程序Pyinstaller打包运行临时目录下文件名())
    print()
    #demo 获取同目录下配置文件，假设配置文件名为config.ini
    exec_dir = 程序文件所在目录()
    fn = os.path.join(exec_dir, 'config.ini')
    print("demo: 配置文件的路径是", fn)